package com.white.mybatis.dynamic;

import java.lang.annotation.*;

/**
 * <p>
 * 表信息
 * </p>
 *
 * @author huangzy
 * @since 2022/2/22
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DynamicTable {

    /**
     * @return 表名
     */
    String value();

    /**
     * 表连接方式
     * 主表无需实现该方法
     *
     * @return 表连接方式
     */
    TableJoinEnum joinType() default TableJoinEnum.UNDEFINED;

    /**
     * 连接条件字段
     * 有序排列
     */
    String onField() default "";

    /**
     * 表连接方式
     */
    enum TableJoinEnum {

        /**
         * 内连接
         */
        INNER_JOIN("INNER JOIN"),

        /**
         * 左连接
         */
        LEFT_JOIN("LEFT JOIN"),

        /**
         * 右连接
         */
        RIGHT_JOIN("RIGHT JOIN"),

        /**
         * 不使用连接
         */
        UNDEFINED(null);

        private final String sql;

        TableJoinEnum(String sql) {
            this.sql = sql;
        }

        public String getSql() {
            return sql;
        }
    }

}
